<?php
class FileHandlerComponent extends Component{
        
	var $size = 1000000000;
	var $type = array('application/pdf');
	var $diretorio;
	
	private function tamanho($tamanho){
		if($this->size < $tamanho)
			return false;
		return true;
	}

	private function tipo($tipo){
		if(is_null($this->type) || in_array($tipo, $this->type)){
			return true;
		}
		return false;
	}

	private function validacaoUnitaria($arquivo){
		if ((isset($arquivo['error']) && $arquivo['error'] != 0) ||
			(!empty( $arquivo['tmp_name']) && $arquivo['tmp_name'] == 'none')) {
			//return __('file_erro_comum');
			return false;
		}
		if(!$this->tipo($arquivo['type']))
			//return __('file_erro_tamanho');
			return false;
		if(!$this->tamanho($arquivo['size']))
			//return __('file_erro_tipo');
			return false;
		return is_uploaded_file($arquivo['tmp_name']);
	}
        
	function validar($arquivo, $mult = false){
		if($mult){
			foreach($arquivo as $item){
				if(!$this->validacaoUnitaria($item))
					return false;
			}
			return true;
		}
		else{
			return $this->validacaoUnitaria($arquivo);
		}       
	}
        
	private function criar_diretorio($pasta){
		if(!file_exists($this->diretorio.DS.$pasta) && !file_exists($pasta)){
			$subpastas = explode(DS, $pasta);
			foreach ($subpastas as $item) {
				mkdir($this->diretorio.DS.$item);
			}
		}
	}
        
        
	function armazenar($pasta, $arquivo, $temp, $mult = false){             
		$this->criar_diretorio($pasta);
		$dest_dir = $this->diretorio;
		if($mult){
			$i = 1;
			foreach ($arquivo as $item){
				if($item['name'])
					if(move_uploaded_file($temp, $dest_dir.DS.$arquivo)){
						return false;
					}
				$i++;
			}
			return true;
		}
		else{
			if(move_uploaded_file($temp, $dest_dir.DS.$arquivo))
				return true;
			else return false;
		}
	}

	function apagarArquivo($arquivo){
		return unlink($this->diretorio.DS.$arquivo);
	}
        
}